package Fulbito.DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import Fulbito.EXCEPCION.DAOExcepcion;
import Fulbito.MODELO.Cancha;
import Fulbito.MODELO.Usuario;
import Fulbito.UTIL.ConexionBD;

public class CanchaDAO extends BaseDAO {
	
	
	public void buscarCanchaDueno(Cancha entCancha,Usuario entUsuario) throws DAOExcepcion{
		
		
		String query = "SELECT Local_Local_CodLocal FROM Cancha WHERE Nombre = ? ";
		//Collection<Cancha> lista = new ArrayList<Cancha>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		ResultSet rs2 = null;
		int Local_CodLocal = 0;
		int codusuario = 0;
		try {
			con = ConexionBD.obtenerConexion();			
			
			stmt = con.prepareStatement(query);
			stmt.setString(1, entCancha.getNombre());
			
			rs = stmt.executeQuery();		
			
			while (rs.next()) {
				Local_CodLocal = rs.getInt("Local_Local_CodLocal");
			}
			
			///usuario
			String query2 = "SELECT Usuario_CodUsuario FROM Local WHERE Local_CodLocal = ? ";
			
			stmt = con.prepareStatement(query2);
			stmt.setInt(1, Local_CodLocal);
			
			rs2 = stmt.executeQuery();
			
			while (rs2.next()) {
				codusuario = rs2.getInt("Usuario_CodUsuario");
			}
			
			if (entUsuario.getCodUsuario()==codusuario){
				
				System.out.println("No se puede insertar la cancha");
				
			}
			
			//System.out.println("No se puede insertar la cancha"+codusuario+" "+entUsuario.getCodUsuario());
			
			
			/*while (rs.next()) {
				//Cancha entCancha = new Cancha();
				entCancha.setLocal_CodLocal(rs.getInt("CodDistrito"));
				entCancha.setLocal_CodLocal(rs.getInt("Local_CodLocal"));
				entCancha.setNombre(rs.getString("Nombre"));
				lista.add(entCancha);
			}*/
			
			
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarResultSet(rs2);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		//return lista;
	}
	
	
	public void buscarCanchaVacios(Cancha entCancha){
		
		if (entCancha.getLocal_CodLocal()==0 ){		
			System.out.println("Vacio");
		}
		
		if (entCancha.getTarifario()==0 ){			
			System.out.println("Vacio");			
		}
		
		if (entCancha.getDescripcion().equals("") ){			
			System.out.println("Vacio");			
		}
		
		if (entCancha.getNombre().equals("") ){			
			System.out.println("Vacio");			
		}
		
		if (entCancha.getDias().equals("") ){			
			System.out.println("Vacio");			
		}
		
		if (entCancha.getHora().equals("") ){			
			System.out.println("Vacio");			
		}
		
		if (entCancha.getEstado().equals("") ){			
			System.out.println("Vacio");			
		}
		
		
	}
	
	public Collection<Cancha> BuscarPorNombre(int CodDistrito, int Local_CodLocal, String NombreCancha) throws DAOExcepcion {
		
		String query = "SELECT * FROM Cancha WHERE Nombre like ? and NombreDistrito like ? and NombreLocal like ? and Estado = 'Disponible'";
		Collection<Cancha> lista = new ArrayList<Cancha>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setInt(1, CodDistrito);
			stmt.setInt(2, Local_CodLocal);
			stmt.setString(3, "%" + NombreCancha+ "%");
			rs = stmt.executeQuery();
			while (rs.next()) {
				Cancha entCancha = new Cancha();
				entCancha.setLocal_CodLocal(rs.getInt("CodDistrito"));
				entCancha.setLocal_CodLocal(rs.getInt("Local_CodLocal"));
				entCancha.setNombre(rs.getString("Nombre"));
				lista.add(entCancha);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return lista;
	}

public Collection<Cancha> ListarCombo(int Local_CodLocal) throws DAOExcepcion {
		
		String query = "SELECT CodCancha,Nombre FROM Cancha Local_CodLocal = ? and Estado = 'Disponible'";
		Collection<Cancha> lista = new ArrayList<Cancha>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setInt(1, Local_CodLocal);
			rs = stmt.executeQuery();
			while (rs.next()) {
				Cancha entCancha = new Cancha();
				entCancha.setCodCancha(rs.getInt("CodCancha"));
				entCancha.setNombre(rs.getString("Nombre"));
				lista.add(entCancha);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return lista;
	}

	public void insertar(Cancha entCancha){
		String query = "INSERT INTO Cancha(Local_Local_CodLocal,Tarifario,Descripcion, Nombre, Dias, Hora, Estado) VALUES (?,?,?,?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setInt(1, entCancha.getLocal_CodLocal());
			stmt.setInt(2, entCancha.getTarifario());
			stmt.setString(3, entCancha.getDescripcion());
			stmt.setString(4, entCancha.getNombre());
			stmt.setString(5, entCancha.getDias());
			stmt.setString(6, entCancha.getHora());
			stmt.setString(7, entCancha.getEstado());			
			
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}
			} catch (SQLException e) {
				System.err.println(e.getMessage());
				//throw new DAOExcepcion(e.getMessage());
			} finally {
				this.cerrarStatement(stmt);
				this.cerrarConexion(con);
			}
	}


}
